feat(updater): add secured preparation controls and restart admission - #51
Merged
Conversation
Connect the authenticated native/backend transaction and sealed draft owner in compile-bound QA. Share the schema-2 parser and preserve attachment bytes across WebKit record rewrites. Verify actual About-button A-to-B replacement, successor health, and normal reopen in isolation. Production activation and final release qualification remain gated.
Join built-in provider producers and the enabled default SDK host before certifying idle. Share the SDK inventory bound across patch, worker, and native validation. Persist notification links through recovery and restart, and clean failed server startup. Verify real isolated app recovery and replay; keep final production release gates intact.
Share startup and manual restart admission across explicit production and exact QA bindings. Honor automatic next-launch installation without a QA-only switch, preserving opt-out. Keep default builds disabled and retain all native ownership, signature, and runtime gates.
Record signed A/B artifacts, real SDK busy deferral, and the before-update data snapshot. Keep the actual transition and public distribution unverified while manual Mac unlock is needed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Latest integrated QA checkpoint (
c64d8aa)Supersedes the earlier unwired-startup note: native launch/Retry gates, sealed successor verification, owned health acknowledgement, persistent two-phase completion recovery and embedded updater presentation are now connected. Official plugin Config is supplied before initialization, QA builds cannot fall back to production HOME without their exact profile, and post-install repaint failure cannot strand a verified replacement.
Private debug qualification succeeded end-to-end: A 0.2.4 → B 0.2.5, actual official replacement, automatic new-process restart, B-owned server health, committed receipt, same origin/project/unsent draft/image. No manual B launch occurred in the accepted
cycle4. A further B restart did not reinstall. Local full verify, native 267 + 10 tests, standard all-target Clippy-D warnings, formatting, and focused DOM regressions passed.This is not public activation/release or notarized same-cut acceptance. Actuation currently requires the explicit compile-bound QA qualification path. General previous-owner proof, full G3 runtime/draft freeze and safe manual restart, actual macOS 13, final signed/notarized acceptance and production key/release obligations remain. The full goal stays active and the PR stays draft. Earlier failed/harness-invalid runs are separately documented, not counted as success.
Evidence and exact limitations:
docs/DESKTOP-UPDATER-LAUNCH-QA.md. All QA executables/feed stopped; old intermediate bundle copies reversibly renamed.app.fixture, not offered as installers. Production installation/data/releases were not targeted. Source versions are back at beta.10/0.2.4; beta.11/0.2.5 exists only as a private QA artifact.Active-goal checkpoint: native installation core (
e143546)The full goal remains automatic updating and distribution, not preparation-only success. Added immutable revalidated cache input, supported exact-endpoint plugin reconstruction, native installation location checks, a durable PID-bound attempt journal, the official install invocation and a complete installed-bundle verifier. Startup/restart does not invoke this path yet, so installation remains unavailable and this PR remains draft. Successor health acknowledgment/attempt archival, launch/restart recovery, complete G3 ownership and signed QA/release gates are next; none was waived.
Validation: full
npm run verify; native 236 tests + 10 build-binding tests; 20,673-entry comparison of the historical isolated B against its archive. This comparison is not a new live A-to-B install. Standard native Clippy still reports unintegrated dead-code APIs; excluding only that warning class is documented, not claimed as final release lint. Exact evidence/next steps:docs/DESKTOP-UPDATER-INSTALL-PROGRESS.md.The prior remote CI SSOT failure was fixed by
7ef7cda; its Node 22/24 and Linux server checks passed. New native-head remote checks are separate. No production app/key/version/release mutation occurred.Status: preparation and partial restart integration — not a finished auto-updater
Stacked on #50. Keep this PR draft:
installationAvailableremains false and nativerestartexplicitly rejects. No production installation, version bump, updater key provisioning or release publication is included.Latest: runtime admission and unsent draft durability (
da8a0c5)Validation on the frozen source set:
npm run verifypassed; source/test/locale SHA256 inventory remained identical throughout final promotion verification and after commit hooks.See
docs/DESKTOP-UPDATE-ADMISSION-IMPLEMENTATION.mdfor exact scope, evidence and gaps. New remote CI is separate from these local results.Earlier preparation/control implementation retained
docs/DESKTOP-UPDATER-QA-PREPARATION.md.49c1010remote Node 22/24, Linux server and Linux desktop/package/GUI checks passed. Do not apply those results to the new head without checking its own runs.Installer evidence and remaining gates
Historical official updater 2.6.0 probes used private HTTPS and isolated signed A/B copies. Normal and authorization-path replacements succeeded; the latter was not cancellation. A second probe returned failure with complete A unchanged, but the user cannot confirm the authorization action and privileged-writer classification remains unproved. These historical bundles retain the advertised-11/loader-13 mismatch and are primitive evidence only.
Still required:
Exact handoff:
docs/MACOS-UPDATER-HANDOFF.mdanddocs/DESKTOP-UPDATE-ADMISSION.md.SDK lifecycle and root draft bridge checkpoint (721806d)